home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / kernel / rpc / rpcCall.h < prev    next >
C/C++ Source or Header  |  1992-12-18  |  9KB  |  225 lines

  1. /*
  2.  *    rpcCall.h --
  3.  *
  4.  *      Definitions of remote procedure numbers.  Each different RPC has a
  5.  *      unique number that identifies it to the server machine.
  6.  *
  7.  *    This file must be consistent with lust:~brent/src/sun/sys/h/rfs.h
  8.  *    so that sprite machines can do rpc with lust as server.
  9.  *
  10.  *    Copyright (C) 1985 Regents of the University of California
  11.  *    All rights reserved.
  12.  *
  13.  *    $Header: /cdrom/src/kernel/Cvsroot/kernel/rpc/rpcCall.h,v 9.10 92/12/13 18:21:28 mgbaker Exp $ SPRITE (Berkeley)
  14.  */
  15.  
  16. #ifndef    _RPCCALL
  17. #define    _RPCCALL
  18.  
  19. #ifdef KERNEL
  20. #include <rpcTypes.h>
  21. #else
  22. #include <kernel/rpcTypes.h>
  23. #endif
  24.  
  25. /*
  26.  *    The remote procedures.  For each procedure the format the request
  27.  *    and reply message is summarized.  See the Rpc_Storage type for
  28.  *    more explaination.  The stubs often rely on the sizes of these area
  29.  *    being returned by the RPC system so that the size of variable length
  30.  *    objects does not have to be in the message explicitly.
  31.  *
  32.  *    RPC_ECHO_1    Special echo that is handled completely by the
  33.  *            server dispatcher.  The server process is not involved.
  34.  *    RPC_ECHO_2    Echo bytes off the server. The request/reply parameter
  35.  *            area is empty.  The request/reply data area contains
  36.  *            the bytes that are echoed.
  37.  *    RPC_SEND    Send bytes to the server.  The request parameter
  38.  *            area is empty.  The request data area has the bytes to
  39.  *            send.  The reply is empty.
  40.  *    RPC_RECEIVE    Unimplemented.
  41.  *    RPC_FS_OPEN    Open a file.  Could create the file, always
  42.  *                follows symbolic links. The request parameter
  43.  *                area contains a FsOpenParams, and the request
  44.  *                data area contains a file name.  The return
  45.  *                parameter area contains an FsOpenReturn
  46.  *                structure.
  47.  *    RPC_FS_READ    Read from a file.  The request parameter area contains
  48.  *            an FsrmtIOParam structure, and the request data
  49.  *            area is empty.  The return data area contains the
  50.  *            bytes read.
  51.  *    RPC_FS_WRITE    Write to a file.  Same request parameter format as Read.
  52.  *            The request data area contains the bytes to write.  The
  53.  *            return parameter area contains the offset at which the
  54.  *            write started, and the amount actually written.
  55.  *    RPC_FS_CLOSE    Close a file.  The request parameter area has an
  56.  *            FsRtoken.  The reply is empty.
  57.  *    RPC_FS_UNLINK    Remove a file.  The request parameter area contains an
  58.  *            FsUserInfo.  The request data area has the file name.
  59.  *    RPC_FS_RENAME    Change the name of a file.  The request parameters
  60.  *            area contains an FsUserInfo, the length of the original
  61.  *            pathname (int), the length of the new pathname (int),
  62.  *            then the original pathname.  The data area
  63.  *            contains the new pathname.
  64.  *    RPC_FS_MKDIR    Make a directory.  The request parameter area contains
  65.  *            an FsUserInfo and a creation mode (int).  The request
  66.  *            data area contains the pathname.  The reply is empty.
  67.  *    RPC_FS_RMDIR    Remove a directory.  The request parameter area contains
  68.  *            an FsUserInfo.  The request data area contains the
  69.  *            pathname.  The reply is empty.
  70.  *    RPC_FS_LINK    Link two files together.  The format of the request
  71.  *            is the same as for FS_RENAME.  The reply is empty.
  72.  *    RPC_GETTIME    Get the time of day.  The request is empty.  The reply
  73.  *            parameter area contains the current time (Time),
  74.  *            the number of minutes west of Greenwich (int), and the
  75.  *            daylights savings flag (int).
  76.  *    RPC_FS_PREFIX    Broadcast a pathname to a server and
  77.  *                get a file handle for its prefix.
  78.  *    RPC_FS_GET_ATTR    Get the file header information about a file.  The
  79.  *            request parameter area contains an FsFileID.  The
  80.  *            reply parameter area contains Fs_Attributes.
  81.  *    RPC_FS_SET_ATTR    Set the file header information about a file.  The
  82.  *            request parameter area contains an FsFileID and a
  83.  *            Fs_Attributes struct.  There is a NULL reply.
  84.  *    RPC_FS_GET_ATTR_PATH    Get attributes given a path name.
  85.  *    RPC_FS_SET_ATTR_PATH    Set attributes given a pathname.
  86.  *    RPC_FS_GET_IO_ATTR    Get attributes cached at the I/O server.
  87.  *    RPC_FS_SET_IO_ATTR    Set attributes cached at the I/O server.
  88.  *    RPC_PROC_MIG_COMMAND Transfer information about a process that is being
  89.  *            migrated.
  90.  *    RPC_PROC_REMOTE_CALL Perform a system call for a migrated process.
  91.  *    RPC_FS_MIGRATE         Start the migration of a file handle.
  92.  *    RPC_FS_RELEASE         Release a stream reference during migration.
  93.  *    RPC_FS_RELEASE_NEW    New version of this call.
  94.  *    RPC_FS_CONSIST    Call from the server to the client to initiate
  95.  *                cache consistency operations.
  96.  *    RPC_FS_CONSIST_REPLY    Reply from the client indicating that
  97.  *                it has completed the cache consistency action.
  98.  *    RPC_FS_DEV_OPEN    Open a connection to the I/O server for a device.
  99.  *    RPC_REMOTE_WAKEUP     Notify a remote process.
  100.  *    RPC_PROC_REMOTE_WAIT    Perform a Proc_Wait for a migrated process.
  101.  *    RPC_FS_SELECT    See if a file is readable or writable.
  102.  *    RPC_FS_IO_CONTROL    Perform an iocontrol.
  103.  *    RPC_FS_MKDEV        Make a special device file
  104.  *    RPC_FS_REOPEN        Reopen a file.
  105.  *    RPC_FS_DOMAIN_INFO    Return information about the given domain.
  106.  *    RPC_FS_RECOVERY        Recovery control message used by clients to
  107.  *                tell server's they want to re-establish
  108.  *                its open file handles, and when they are done.
  109.  *    RPC_PROC_GETPCB        Retrieve a process control block from another
  110.  *                host.
  111.  *    RPC_FS_BULK_REOPEN    Reopen a set of handles instead of just one.
  112.  *    RPC_FS_SERVER_REOPEN    Server's request to clients to begin recovery.
  113.  *
  114.  * These procedure numbers and the service switch should be generated
  115.  * from another file...
  116.  */
  117.  
  118. #define    RPC_BAD_COMMAND        0
  119. #define    RPC_ECHO_1        1
  120. #define    RPC_ECHO_2        2
  121. #define    RPC_SEND        3
  122. #define    RPC_RECEIVE        4
  123. #define    RPC_GETTIME        5
  124. #define    RPC_FS_PREFIX        6
  125. #define    RPC_FS_OPEN        7
  126. #define    RPC_FS_READ        8
  127. #define    RPC_FS_WRITE        9
  128. #define    RPC_FS_CLOSE        10
  129. #define    RPC_FS_UNLINK        11
  130. #define    RPC_FS_RENAME        12
  131. #define    RPC_FS_MKDIR        13
  132. #define    RPC_FS_RMDIR        14
  133. #define RPC_FS_MKDEV        15
  134. #define    RPC_FS_LINK        16
  135. #define    RPC_FS_SYM_LINK        17
  136. #define    RPC_FS_GET_ATTR        18
  137. #define    RPC_FS_SET_ATTR        19
  138. #define RPC_FS_GET_ATTR_PATH    20
  139. #define RPC_FS_SET_ATTR_PATH    21
  140. #define RPC_FS_GET_IO_ATTR    22
  141. #define RPC_FS_SET_IO_ATTR    23
  142. #define    RPC_FS_DEV_OPEN     24
  143. #define    RPC_FS_SELECT        25
  144. #define    RPC_FS_IO_CONTROL    26
  145. #define    RPC_FS_CONSIST         27
  146. #define    RPC_FS_CONSIST_REPLY    28
  147. #define    RPC_FS_COPY_BLOCK    29
  148. #define    RPC_FS_MIGRATE         30
  149. #define    RPC_FS_RELEASE         31
  150. #define    RPC_FS_REOPEN        32
  151. #define RPC_FS_RECOVERY        33
  152. #define    RPC_FS_DOMAIN_INFO    34
  153. #define    RPC_PROC_MIG_COMMAND     35
  154. #define    RPC_PROC_REMOTE_CALL     36
  155. #define    RPC_PROC_REMOTE_WAIT    37
  156. #define    RPC_PROC_GETPCB        38
  157. #define    RPC_REMOTE_WAKEUP     39
  158. #define    RPC_SIG_SEND        40
  159. #define    RPC_FS_RELEASE_NEW     41
  160. #define    RPC_FS_BULK_REOPEN     42
  161. #define    RPC_FS_SERVER_REOPEN     43
  162. #define    RPC_LAST_COMMAND    RPC_FS_SERVER_REOPEN
  163. #define RPC_NUM_COMMANDS    (RPC_LAST_COMMAND+1)
  164.  
  165. /*
  166.  * RPC_NUM_COMMANDS is used to declare the rpc procedure switch and
  167.  * arrays of counters for each rpc.  (RPC_LAST_COMMAND used to be
  168.  * used, but it was too easy to get the declaration wrong.)
  169.  */
  170.  
  171. /*
  172.  * Procedures in the rpc service switch.
  173.  */
  174. extern ReturnStatus RpcNull _ARGS_((ClientData srvToken, int clientID, int command, Rpc_Storage *storagePtr));
  175. extern int RpcEcho _ARGS_((ClientData srvToken, int clientID, int command, Rpc_Storage *storagePtr));
  176.  
  177. #ifdef JUST_LISTING
  178. ReturnStatus Fs_RpcOpen();        /*  FS_OPEN */
  179. ReturnStatus Fs_RpcRead();        /*  READ */
  180. ReturnStatus Fs_RpcWrite();        /*  WRITE */
  181. ReturnStatus Fs_RpcClose();        /*  CLOSE */
  182. ReturnStatus Fs_RpcRemove();        /*  UNLINK, RMDIR */
  183. ReturnStatus Fs_Rpc2Path();        /*  RENAME, LINK */
  184. ReturnStatus Fs_RpcMakeDir();        /*  MKDIR */
  185. #endif /* JUST_LISTING */
  186.  
  187. /* GETTIME */
  188. extern ReturnStatus RpcGetTime _ARGS_((ClientData srvToken, int clientID, int command, Rpc_Storage *storagePtr)); 
  189.  
  190. #ifdef JUST_LISTING
  191. ReturnStatus Fs_RpcPrefix();        /*  FS_PREFIX */
  192. ReturnStatus Fs_RpcGetAttr();        /*  FS_GET_ATTR */
  193. ReturnStatus Fs_RpcSetAttr();        /*  FS_SET_ATTR */
  194. ReturnStatus Fs_RpcGetAttrPath();    /*  FS_GET_ATTR_PATH */
  195. ReturnStatus Fs_RpcSetAttrPath();    /*  FS_SET_ATTR_PATH */
  196. ReturnStatus Fs_RpcGetIOAttr();        /*  FS_GET_IO_ATTR */
  197. ReturnStatus Fs_RpcSetIOAttr();        /*  FS_SET_IO_ATTR */
  198. #ifdef notdef
  199. ReturnStatus Proc_RpcMigInit();        /*  PROC_MIG_INIT */
  200. #endif /* notdef */
  201. ReturnStatus Proc_RpcMigCommand();    /*  PROC_MIG_COMMAND */
  202. ReturnStatus Proc_RpcRemoteCall();    /*  PROC_REMOTE_CALL */
  203. ReturnStatus Fs_RpcStartMigration();    /*  FS_MIGRATE */
  204. ReturnStatus Fs_RpcConsist();        /*  FS_CONSIST */
  205. ReturnStatus Fs_RpcDevOpen();        /*  FS_DEV_OPEN */
  206. ReturnStatus Sync_RemoteNotifyStub();    /*  REMOTE_WAKEUP */
  207. ReturnStatus Proc_RpcRemoteWait();    /*  PROC_REMOTE_WAIT */
  208. ReturnStatus Fs_RpcSelectStub();        /*  FS_SELECT */
  209. ReturnStatus Fs_RpcIOControl();        /*  FS_RPC_IO_CONTROL */
  210. ReturnStatus Fs_RpcConsistReply();    /*  FS_CONSIST_REPLY */
  211. ReturnStatus Fs_RpcBlockCopy();        /*  FS_COPY_BLOCK */
  212. ReturnStatus Fs_RpcMakeDev();        /*  FS_MKDEV */
  213. ReturnStatus Sig_RpcSend();        /*  SIG_SEND */
  214. ReturnStatus Fs_RpcReopen();        /*  FS_REOPEN */
  215. ReturnStatus Fs_RpcDomainInfo();        /*  FS_DOMAIN_INFO */
  216. ReturnStatus Fs_RpcRecovery();        /*  FS_RECOVERY */
  217. ReturnStatus Proc_RpcGetPCB();        /*  PROC_GETPCB  */
  218. ReturnStatus Fsio_RpcStreamMigCloseNew();/*  FS_RELEASE_NEW */
  219. ReturnStatus Fs_RpcBulkReopen();    /*  FS_BULK_REOPEN */
  220. ReturnStatus Fs_RpcServerReopen();    /*  FS_SERVER_REOPEN */
  221. #endif /* JUST_LISTING */
  222.  
  223. #endif /*    _RPCCALL */
  224.  
  225.